The world of digital delivery of multimedia content to viewers has been rapidly progressing. Typical types of multimedia content include video clips, electronic games, and interactive content. The delivery process for such multimedia content, particularly those transmitted in a form of video, may entail use of a variety of delivery standards, video quality levels, and other parameters. The techniques used in traditional television (TV) broadcast cannot be effectively used in the more modern multi-standard digital TV arena. Currently, only piecemeal solutions are available for efficient and seamless delivery of such multimedia content, to the arena of digital TV.
Specifically, content delivery is currently performed using two approaches: legacy content distribution and over-the-top (OTT) content distribution. Legacy content providers include, for example, cable, satellite, and internet protocol TV (IPTV) providers. Typically, such providers have full control over the entire delivery chain from a central location where the content is originated and transmitted (head-end) through the network to the end-user's device (e.g., a set-top box). Therefore, legacy content providers can manage and guarantee efficient content delivery mechanisms and high Quality of Experience (QoE) to the end-user.
Over-the-top (OTT) content distribution is the delivery of audio, video, and other types of multimedia content over the Internet without any control of the content distribution by the network operators and/or by the content providers. The providers of OTT content are third party providers which utilize the network's infrastructure to provide content to their subscribers. As such, OTT content providers are not responsible for controlling redistribution of the content. Examples of OTT content providers are Hulu®, Netflix®, and the like.
Various types of OTT content or streams can be streamed over a network. For example, the type of the streamed content may be live, linear, replicated, or recorded. A live OTT stream is a transmission of a live content (e.g., a sports match, a concert, news, etc.). A linear stream is a broadcasted content, such as a TV show broadcasted over the Internet. In both live and linear OTT streams, all viewers watch the same stream substantially at the same time, and such types of OTT streams will be referred hereinafter as repetitive OTT streams. In contrast, recorded content, such as content from a video on demand (VoD) service, may be viewed by different viewers in asynchronous manners, i.e., each user can start watching the recorded content at any time and the viewing times of users may fully overlap, may partially overlap, or may not overlap at all. As a result of this asynchronicity, existing solutions cannot effectively provide such content to multiple viewers in multicast format, as multicast format typically requires synchronized viewing of the delivered content.
Another type of streamed OTT content refers to the delivery of managed OTT content. This is a type content owned by a network operator that is delivered by the operator or through one of its partners. As such, the network operator controls the media streaming server and, therefore, can determine if the delivered content can be multicasted, as well as the number of concurrent viewers of the streamed content. Managed live and linear OTT content will also be referred to hereinafter as repetitive OTT streams.
To improve Quality of Service (QoS) and Quality of Experience (QoE), repetitive streams may be sent from their originator servers to multiple distributed streaming servers over the Internet. Such streaming servers are known as content delivery networks (CDNs). Upon receipt of a request for a specific repetitive OTT stream from a specific website or a client device, the repetitive OTT stream may be duplicated in the closest CDN streaming server near the clients requesting the respective content. Then, the content is streamed to the requesting client from a CDN's server rather than directly by the originator server. This indirect transmission reduces load on the originator server, required network capacity, and network delay perceived by clients accessing the requested content. As a result, the user's QoEs are enhanced. For each repetitive OTT stream, a CDN streaming server duplicates a single stream of video into multiple streams, with one stream duplicated per client (or user).
Live OTT content consumption is typically characterized by a group of users that consume the same content at the same time. For example, various users simultaneously viewing a live event (e.g., a live show, a sporting event, and so on) may be categorized as viewers of live OTT content. Linear OTT content may also be requested by multiple viewers requesting the same linear video on demand (VoD) content approximately at the same time. CDN operators usually design their servers to support average consumption for serving live content and repetitive content just like the VoD use case, and hence are inefficient.
The ongoing growth of live and/or linear OTT content streaming in society has led to peak in demand (PiD) events involving streaming of resources by CDNs. Such PiD events can overburden the CDN, thereby denying clients access to the content. This denial is particularly significant for live events, which users are not able to watch or may not desire to watch after the initial live showing.
To address the issues caused by PiD events, CDN operators can design streaming capacity of their servers to maximum capacity respective of expected peaks. Alternatively, CDN operators can implement highly efficient streaming servers which can dramatically increase the streaming capacity during PiD events via optimization of repetitive OTT content during the execution of serving the content to content's end consumers.
FIG. 1 shows a schematic block diagram of a conventional streaming server 100 utilized to stream live OTT content. Several end-user (or client) devices 150 are connected to a live streaming server 100 via a unicast communication channel 155. An end-user device 150 may be, for example, a smart phone, a tablet computer, a personal computer (PC), and the like.
In a conventional implementation, the live streaming server 100 executes a streaming application 120, which is responsible for handling business logic and the delivery of live OTT content to the devices 150. To this end, the streaming application 120 is typically configured to open and manage a Transmission Control Protocol (TCP) socket, receive and analyze an input request for specific content, read the requested content from a local disk (not shown), and send “chunks” of the requested content to TCP socket. These actions are performed per end-user device 150, hence resulting with a non-scalable solution.
In some conventional implementations, the streaming application 120 is executed in the user space 110, while the streaming server's 100 hardware is abstracted by the operating system kernel 160 using different kernel modules, such as an IP networking subsystem 130. All kernel modules, and particularly the IP networking subsystem 130, typically reside in a kernel space 165, and the streaming application 120 can only communicate with such kernel modules using system calls via APIs, such as a socket API 121. An example of such an API is a BSD sockets API.
The streaming application 120 creates and manages TCP sockets 122. Each socket 122 designates a single TCP stream per user connection. The streaming application 120 sends multiple copies of the same live content data over each TCP socket 122 to the kernel IP networking subsystem 130. The IP networking subsystem 130 delivers the data to the device driver 140 via a device driver API 131 and sockets 132. Typically, the device driver 140 passes the data using proprietary hardware API to a network interface card (NIC) 145 for delivery over the unicast communication channel 155.
An operating system (not shown) of the end-user device 150 has no information regarding the actual data being sent by the streaming application 120. Further, the streaming application 120 has no means to inform the operating system of the end-user device 150 of any special properties of the transmitted data, such as if the data is a live or linear stream. Therefore, the streaming application 120 and operating system of the end-user device 150 cannot optimize the content being delivered to the end-user devices 150.
One major drawback of conventional streaming servers is that streams of the same live/linear content are replicated for each end-user device 150 requesting the content. Specifically, sending multiple copies of the same content to multiple end-user devices 150 from an application residing in the user space 110 to the kernel space 165 is inefficient because the inherent data redundancy in repetitive (live/linear) content streaming is not accounted. As a result, a large amount of redundant context switches and data copying between the user space 110 and the kernel space 165 is generated. This redundant generation leads to overloading of the streaming applications, delays in sending streams to end-user devices 150, and increased consumption of processing power.
It would therefore be advantageous to provide a solution that overcomes the deficiencies of the prior art by optimizing the operation of streaming servers operable in CDNs.